/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cinvestav.adviseme.util;

/**
 *
 * @author javier
 */
public abstract class SortableList {

    protected String sortColumnName;
    protected boolean ascending;

    // we only want to resort if the oder or column has changed.
    protected String oldSort;
    protected boolean oldAscending;


    protected SortableList(String defaultSortColumn) {
        sortColumnName = defaultSortColumn;
        ascending = true;
        oldSort = sortColumnName;
        // make sure sortColumnName on first render
        oldAscending = !ascending;
    }

    /**
     * Ordena la lista
     */
    protected abstract void sort();

    /**
     * Obtiene el nombre de la columna a ordenar.
     *
     * @return columna a ordenar
     */
    public String getSortColumnName() {
        return sortColumnName;
    }

    /**
     * Establece el nombre de la columna a ordenar
     *
     * @param sortColumnName columna a ordenar
     */
    public void setSortColumnName(String sortColumnName) {
        oldSort = this.sortColumnName;
        this.sortColumnName = sortColumnName;

    }

    /**
     * El orden es ascendente?
     *
     * @return true si el orden debe ser ascendente
     */
    public boolean isAscending() {
        return ascending;
    }

    /**
     * Establece el orden a segir
     *
     * @param ascending true para ascendente, false para descendente
     */
    public void setAscending(boolean ascending) {
        oldAscending = this.ascending;
        this.ascending = ascending;
    }
}
